import argparse
class Config():
    def __init__(self):
        parser = argparse.ArgumentParser()
        '''
        训练数据的相关参数
        '''
        parser.add_argument('--root',default='data/litchi_seg',help="数据集根路径")
        parser.add_argument('--iters', type=int,default=10000, help="训练的迭代次数")
        parser.add_argument('--num_classes', type=int, default=21, help="分割的类别数")
        parser.add_argument('--batch_size', type=int, default=1, help="训练的批次大小")
        parser.add_argument('--num_workers', type=int, default=0, help="读取数据的num_wokers数量")
        parser.add_argument('--train_method', default="semi",
                            help="采取半监督训练方式还是有监督训练方式")
        parser.add_argument('--lr', default=2.5e-4, type=int, help="learing rate in training")
        '''
        半监督训练的相关参数
        '''
        parser.add_argument('--semi_root',default='data/litchi_semi',help="无监督训练集根路径")
        parser.add_argument('--start_semi',type=int,default=5000,help="开始无监督训练的时间")
        parser.add_argument('--lambda_adv',type=float,default=0.1,help="监督训练的超参数")
        parser.add_argument('--lambda_semi', type=float, default=0.1,help="无监督训练的超参数")
        parser.add_argument('--use_semi',type=bool,default=False,help="是否使用生成器的无监督推理结果去更新鉴别器")
        parser.add_argument('--mask_T',type=float,default=0.2,help="生成掩码图的阈值")
        parser.add_argument('--semi_val_step',type=int,default=1000,help="多久验证")
        parser.add_argument('--use_semi_discriminate',type=bool,default=False)
        '''
        可视化相关参数
        '''
        parser.add_argument('--val_step', type=int, default=1, help="how long eavl your model")
        self.args = parser.parse_args()
        self.print_and_return()
    def print_and_return(self):
        print("---------输出训练的参数-------------")
        print("---batch_size:",self.args.batch_size)
        print("---iters:",self.args.iters)
        print("---val_step",self.args.val_step)
        print("----------------------------------")
